下列是過去十天我用各種技巧訓練的模型,
只要該技巧對 val acc 或 val loss 有勝過 EFN_base,
那我就會將其納入最後的模型實驗。
恭喜三種不同的learning rate decay和dropout入圍最終實驗!
恭喜nStepsToAll、nStepsToBlock7、class weight、image augmentation入圍最終實驗!




好了,那最後我到底做了哪些參數組合呢?
| 參數 | 參數空間 | 長度 | 
|---|---|---|
| LR decay | step decay, poly decay ,exp decay,RLOP, None | 5 | 
| Optimizer | SGD, Adam | 2 | 
| unfreeze last n layers | 6, 19, 78, 1000(all) | 4 | 
| class weights | balance, origin | 2 | 
| epochs | 100 | 1 | 
| batch size | 128 | 1 | 
5*2*4*2*1*1 = 80
難道我真的要訓練出80個模型嗎?
其實也不用,
因為我在前幾個模型訓練出來就發現:
只有unfreeze到最後78層的訓練效果不好,我果斷地把unfreeze last n layers通通設為1000(剩下20個組合)
然後我發現SGD不管搭配哪種decay都收斂很慢,100輪內絕對贏不了Adam (剩下10個組合)
接下來基本就是學習率衰減和類別權重的比較了。
 
 
最後勝出的參數組合如下:
| 參數 | 參數空間 | 
|---|---|
| LR decay | poly decay | 
| Optimizer | Adam | 
| unfreeze last n layers | 1000(all) | 
| class weights | balance | 
| epochs | 100 | 
| batch size | 128 | 

我最終的準確率是0.6500,
排在第5名的位置,
剛好晉升Gold階級的最後一名 :D
我在網路上看到有人修改VGG的架構,
搭配上cosine decay和SGD Nesterov,
用二階段訓練了300輪+50輪,
最後達到73.2%準確率。
看來我還有一段很長的路要走...
現在回想起來我還有很多地方可以修改,
但是實務上根本不會有這麼多時間給你開發演算法QQ
就像這個30天的專案一樣,
到底最後不到10天能不能做出App呢?
敬請期待!